<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>关系表达式</title>
    </head>
    <body>
        <script>
            // 关系运算符
            // 大于         >
            // 小于         <
            // 大于或等于   >=
            // 小于或等于   <=
            // 等于         ==
            // 不等于       !=
            // 全等于       ===
            // 不全等于     !==

            // 判断是否相等
            // 如果想比较两个值是否相等，此时应该使用==运算符
            // JavaScript中等号=表示赋值，而并不是相等。判断相等应该使用==运算符
            // 3 == 3       // true
            // 3 === 3      // true
            // 3 = 3        // 错误语句

            // 相等和全等
            // 两个等号==运算符不比较值的类型，它会进行隐式转换后比较值是否相等
            // 三个等号===运算符，不仅比较值是否相等，也比较类型是否相同
            // 5 == '5';    // true
            // 5 === '5';   // false
            // 1 == true    // true
            // 1 === true   // false
            // 0 == false   // true
            // 0 === false  // false
            // 0 == undefined   // false
            // 0 === undefines  // false

            // undefined == null    // true
            // undefined == null    // false
            // 1.null和undefined用==进行比较涉及隐式强制类型转换，ES5规范中规定：
            //      - 如果x为null，y为undefined，则结果为true
            //      - 如果x为undefined，y为null，则结果为true
            // 2.null和undefined用===比较时结果为false是因为类型不同；
            //      - typeof null --> object
            //      - typeof undefined --> undefined

            // NaN不自等
            // NaN作为一个特殊的数字类型值，它在用==比较的时候也有特殊的结果
            // NaN == NaN           // false
            // NaN === NaN          // false
            // 如何判断某变量值为NaN
            // isNaN()函数可以用来判断变量值是否为NaN
            // isNaN(NaN)           // true
            // isNaN(5)             // false
            // 但isNaN()也不好用，它的机理是：只要该变量传入Number()的执行结果是NaN，则isNaN()函数都会得到true
            // isNaN(undefined)     // true
            // isNaN('3天')         // true
            // isNaN(null)          // false

            // 不相等和不全等
            // != 表示不相等， != 表示不全等
            // 5 != 6              // true
            // 5 !== 6             // true
            // 5 != '5'            // false
            // 5 !== '5'           // true
        </script>
    </body>
</html>